热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

更多|再选_CA周记在AzureML上用.NET跑机器学习

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CA周记-在AzureML上用.NET跑机器学习相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了CA周记 - 在 Azure ML 上用 .NET 跑机器学习相关的知识,希望对你有一定的参考价值。



.NET 是一个跨平台,全场景应用的开源技术。你有在用 .NET 做机器学习/深度学习的应用吗?如果从框架角度,ML.NET / Tensorflow.NET / 不断在进步的 TorchSharp 通过几年的发展已经开始稳定,但如果在一些大型项目上,特别现在与云端环境的对接上都是非常重要的,毕竟云端可以帮助机器学习每一步的流程进行优化,从数据管理,到训练,再到测试,以及部署都是非常重要的。


Azure ML 是非常优秀的机器学习/深度学习平台,涵盖整个机器学习/深度学习的所有流程。那这个时候有人会问 Azure ML 能跑传统的机器学习/深度学习项目都是基于 Python,但能否可以跑 .NET 的机器学习呢?是否可以让 .NET 的机器学习项目和云端结合在一起。今天我就来给大家展示一下,我是如何使用 .NET 结合 Azure ML 跑图像分类的。


0


准备工作


从 Azure Portal 上构建一个 Azure 机器学习服务环境,因为你需要用 GPU,所以区域记得选择 “West US2”



创建成功后,你可以进入相关资源组,并记录下刚才创建的 Resource Group 和 Azure ML Service Name



你可以通过点击 Studio Web URL 进入 Azure Machine Learning Studio



1


从数据采集与整理开始


这个与编程语言无关的内容,但是也是非常重要的内容,数据是最重要的部分。通过 Azure ML 你可以对数据进行管理,这就包括数据存储,版本管理,以及数据特征提取等工作。我们可以从 Azure ML 门户的数据选项上,进行不同数据的管理。


1.选择左菜单栏的 Assets ,选择 Data,选择 Data assets 进行添加



2. 创建数据,给名字和对应的格式,这里的数据你可以通过该链接 https://github.com/kinfey/HandsOnLab/tree/main/MLNetLab/tfnetcode/TF_DEEP_WIN_GPU_LearnDemo/image/flower_photos 进行下载



3. 从本地上传数据



4.上传成功后,你可以看到相关信息



记录下 Named asset URI 的名字,这里是 azureml:flower_data:1


2


训练


每个人会把数据训练看成非常重要的一环。在 .NET 中你可以选用 ML.NET 或者 TensorFlow.NET / TorchSharp 进行训练,从很多文档或者你只看到了 Python 的方式。我这里分享一下用 .NET 的方式。


首先你需要在 Azure ML 上构建你的算力,点击菜单 “Compute”,再选择“Compute clusters”。通过创建,选择 GPU 选择使用 K80 (如果你需要其他算力,可以自动申请)




构建完成后,我这里需要把代码进行调整,代码我这里使用了 Tensorflow.NET 的图像分类的示例,并作了一下调整,大家可以参考我的 GitHub 获取代码


https://github.com/kinfey/dotNETMLinAzureML


这里有几点需要注意的,因为在 Azure ML 上,所有计算的算力都是基于 Linux 和 GPU ,所以在加载 Tensorflow.NET 的库的时候请使用 Tensorflow.NET Linux 的 GPU 版本。大家可以参考下





我们需要让 .NET 在 Azure ML 上跑,我们需要有一个容器的环境结合算了一起跑。这就好比作,你需要一个 .NET 的运行环境然后加上算力。


在 Azure ML , 你可以通过本地配置 yaml 去设定相关的内容,包括需要执行的语句,也包括数据存储相关的路径,运行环境,以及所需要的算力等。如下所示


$schema:https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command:|
FILENAME=libtensorflow-gpu-linux-x86_64-2.5.0.tar.gz
wget -q --no-check-certificate https://storage.googleapis.com/tensorflow/libtensorflow/$FILENAME
tar -C /usr/local -xzf $FILENAME
ldconfig /usr/local/lib
cd code
dotnet restore
dotnet build
dotnet run --dataPath $inputs.data_dir --outputPath outputs
code:.
inputs:
data_dir:
type:uri_folder
path:azureml:flower_data:1
experiment_name:tf-image-training
environment:
build:
path:.
dockerfile_path:Dockerfile
compute:azureml:GPUCluster

补充说明


  1. 1.input:对应的是输入的数据,可以对应在 Azure ML 设定的数据,你可以选择文件夹和文件类型

  2. 2.command: 对应的是你要执行的文件, 因为 Tensorflow.NET 需要 libtensorflow,你必须去做相关的下载,并在运行环境中设置好

  3. 3.environment: 环境依赖,你可以直接设定容器,但我更喜欢把环境设置在 Dockerfile 上,这样你可以随时添加所需要的支持,如 ML.NET CLI 环境或者是一些包等,以下是我的 Dockerfile


FROM mcr.microsoft.com/dotnet/sdk:6.0
RUN apt install wget

    4. compute:就是对应创建的算力


本地的 yaml 环境后,就可以在本地运行对应的脚本 (你必须安装 Azure CLI 环境,还有 Azure ML SDK v2 的扩展支持,这是必须的。具体你可以点击该地址了解更多), 在本机环境中执行如下步骤


az configure --defaults group=CUDAWSGroup workspace=CUDAWS

az ml job create --file AzureTrain.yml

5.experiment_name: 你可以给训练起一个名字,这个我觉得蛮好用的,可以针对不同的项目进行归类


如果执行顺利,你就可以直接通过 Azure ML 开启你的 .NET 机器学习/深度学习训练了,下图是通过点击 job 看到的每次训练的内容



你也可以点击某次训练了解更多



这个例子并不是完美的算法,但也足矣说明问题了,当然你可以通过程序设定看看调整算法来提升精确度


3


模型测试


你可以在程序中添加测试的样例去看结果,这个会在以后的内容中和大家再说说


4


模型部署


如果你对某次模型训练比较满意,你就可以选择把该次训练产生的模型注册,并部署到 endpoint,可以选择在本地用 yaml 完成,但有些小伙伴喜欢在 Azure 门户上用一些手动化操作也可以


1.模型注册


选择 Models , 并点击 Register ,选择 From a job input



选择你所需要的训练



你就可以从 outputs 文件夹中选取对应的模型,作为部署



部署成功后你就可以看到相关的模型信息



当然你也可以不在 Azure 上部署,可以在 Jobs 把模型下载下来给不同平台使用



2. 在 Endpoints 中生成服务


或者你需要在 Azure 上直接部署服务,这个时候你只需要点击 Endpoints 和对应服务关联就可以了。或者我更喜欢用 Azure Functions 来完成该步骤,这个日后再和大家说说了


Azure 上可以支持托管部署,和 Kubernetes 部署,这就看你需要什么方式



5


总结


你可以看到在 Azure ML 上,通过 .NET 把机器学习的整个流程都完成了。这也让各位 .NET 的开发人员和团队更有信心地采用 .NET 做机器学习/深度学习的项目。现在 .NET 机器学习不仅仅只是框架,也可以通过云端进行管理,是完整的解决方案。各位小伙伴请放胆使用。也希望有更多小伙伴来做更多有趣的机器学习应用。


最后和大家剧透一下 ,全球的 .NET Conf 2022 下周就开始了,我在 .NET Conf 2022 上,我会和大家谈谈全场景的 .NET 深度学习开发,具体时间北京时间 11 月 10 日 北京时间 13:30 - 14:00 ,大家一定不要错过!(虽然是英文,但希望更位小伙伴也能上线大家)。下周约定大家不见不散



还有我们 12 月 3 日 和 12 月 4 日 的 .NET Conf 2022 中国也会开始了,有更多小伙伴们熟悉的 .NET 大神 。大家也一定不要错过。



相关资源


1.免费 Azure 账号申请 


https://azure.com/free


2.学生免费 Azure 账号申请 


 https://aka.ms/studentgetazure


3.了解 Azure ML 


https://learn.microsoft.com/en-us/azure/machine-learning/overview-what-is-azuremachine-learning


4.安装 Azure CLI 


https://learn.microsoft.com/en-us/cli/azure/install-azure-cli


5.安装 Azure ML SDK v2


https://learn.microsoft.com/en-us/azure/machine-learning/how-to-configurecli?tabs=public


6.了解 ML.NET 


https://dotnet.microsoft.com/en-us/apps/machinelearning-ai/ml-dotnet


7.了解 Tensorflow.NET 


https://github.com/SciSharp/TensorFlow.NET


8.学习 Tensorflow.NET 的相关案例 


https://github.com/SciSharp/SciSharp-Stack-Examples


CA周记往期回顾:




更多原创文章与资源共享


请关注Kinfey Techtalk


推荐阅读
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 【MicroServices】【Arduino】装修甲醛检测,ArduinoDart甲醛、PM2.5、温湿度、光照传感器等,数据记录于SD卡,Python数据显示,UI5前台,微服务后台……
    这篇文章介绍了一个基于Arduino的装修甲醛检测项目,使用了ArduinoDart甲醛、PM2.5、温湿度、光照传感器等硬件,并将数据记录于SD卡,使用Python进行数据显示,使用UI5进行前台设计,使用微服务进行后台开发。该项目还在不断更新中,有兴趣的可以关注作者的博客和GitHub。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • ZSI.generate.Wsdl2PythonError: unsupported local simpleType restriction ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 成功安装Sabayon Linux在thinkpad X60上的经验分享
    本文分享了作者在国庆期间在thinkpad X60上成功安装Sabayon Linux的经验。通过修改CHOST和执行emerge命令,作者顺利完成了安装过程。Sabayon Linux是一个基于Gentoo Linux的发行版,可以将电脑快速转变为一个功能强大的系统。除了作为一个live DVD使用外,Sabayon Linux还可以被安装在硬盘上,方便用户使用。 ... [详细]
author-avatar
香港买iphone
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有